Skip to main content

Design Methodology

Technology Stack

Here's the software we use:

Backend

  • Database: PostgreSQL
  • Keystore: Redis
  • Code: NodeJS / NestJS
  • Role Management: Casbin (RBAC / ACL)
  • Local Development Environment: Devbox (wrapper for Nix)

Frontend:

  • Framework: SvelteKit
  • Build Tool: Vite
  • CSS Framework: TailwindCSS
  • UI Components: DaisyUI

To understand the structure of our backend and frontend, take a look at these architecture diagrams:

Frontend Architecture Backend Architecture

Endpoint Design

Our endpoints and code follow Domain-Driven Design principles, which means:

  • We use Object-Oriented Design as much as possible.
  • We have well-defined subdomains, objects, and bounded contexts.
  • Endpoints are designed to be RESTful whenever possible.

Thin Onion Structuring

We use the thin onion approach with MVC (Model-View-Controller) to organize our code:

  1. Controller / Route: Parses the request and prepares the response.
  2. Service: Contains logic to manipulate the service object.
  3. Repository: A thin layer on top of a database table.

For the repository model, we use GORM as our ORM (Object-Relational Mapping) tool.